// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Gebruik de DudeSpin casino promo code voor online casino spelen in Nederland – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Hoe maak je gebruik van de DudeSpin casino promo code voor online casino spelen in Nederland?
Als je op zoek bent naar het gebruik van de DudeSpin casino promo code voor online casino spelen in Nederland, volg dan deze eenvoudige stappen:
1. Ga naar de officiƫle website van DudeSpin casino.
2. Maak een nieuw account aan of meld je aan bij je bestaand account.
3. Zoek naar de sectie “Promoties” of “Aanbiedingen” op de website.
4. Voer de DudeSpin casino promo code in het veld “Promotiecode” in.
5. Maak je eerste storting en ontvang je bonus.
6. Begin met spelen en geniet van alle casino spellen die DudeSpin te bieden heeft!
DudeSpin casino promo code: hoe profiteren van online casino spelen in Nederland?
Als je op zoek bent naar de DudeSpin casino promo code en je wenst te weten hoe je profiteren van online casino spelen in Nederland, dan is dit de plek voor je! Registreer je vandaag nog en ontvang direct een welkomstbonus. Vul einfach den Promo Code “DUDE100” bei de Anmeldung ein und erhalte 100% Bonus auf deine erste Einzahlung. Spel verantwoord en geniet van alle voordelen die DudeSpin heeft te bieden. Probeer nu je geluk en verhoog je kansen op een groot gewin!
Als je op zoek bent naar de DudeSpin casino promo code en je wenst te weten hoe je profiteren van online casino spelen in Nederland, dan is dit de plek voor je! Registreer je vandaag nog en ontvang direct een welkomstbonus. Vul einfach den Promo Code “DUDE100” bei de Anmeldung ein und erhalte 100% Bonus op deine erste Einzahlung. Spel verantwoord en geniet van alle voordelen die DudeSpin heeft te bieden. Probeer nu je geluk en verhoog je kansen op een groot gewin!
Online casino spelen in Nederland: hoe werkt de DudeSpin casino promo code?
Online casino spelen in Nederland is een populaire hobby voor veel mensen. Een manier om je ervaring te verbeteren is door gebruik te maken van promocodes. Een voorbeeld is de DudeSpin casino promo code. Met deze code kan je kortingen of andere voordelen ontvangen. Maar hoe werkt deze code precies?
Als je je aanmeldt op DudeSpin casino, heb je de optie om een promocode in te voeren. Dit doe je tijdens het registratieproces of later in je accountinstellingen. Voer de DudeSpin casino promo code in en controleer of deze is geaccepteerd.
Nadat je de code hebt ingevoerd, zal de casino website controleren of je voldoet aan de eisen om de code te gebruiken. Dit kan zijn dat je een minimum deposit moet doen of dat je nieuwe speler moet zijn. Als je voldoet aan de eisen, zal de promo direct worden toegepast op je account.
De DudeSpin casino promo code kan je kortingen geven op je deposits, gratis spins of andere voordelen. Controleer de details van de code om te zien wat je kunt verwachten. Let op dat promocodes vaak beperkte tijd beschikbaar zijn, dus zorg ervoor dat je ze op tijd gebruikt.
Als je hulp nodig hebt met het gebruik van de DudeSpin casino promo code of andere promocodes, kan je contact opnemen met het klantenservice van het casino. Ze kunnen je helpen met alle vragen die je hebt en je vertellen hoe je de meeste uit je promocode kunt halen.
In totaal is het gebruik van de DudeSpin casino promo code een eenvoudige manier om je online casino spelen in Nederland te verbeteren. Probeer het uit en geniet van alle voordelen die je kan krijgen!
De beste tips voor het gebruiken van de DudeSpin casino promo code in Nederland
Als je op zoek bent naar de beste tips voor het gebruiken van de DudeSpin casino promo code in Nederland, dan bent u hier aan het goede adres. Hier zijn 6 handige tips voor u: 1. Zorg ervoor dat u zich aanmeldt op de officiƫle website van DudeSpin casino.
2. Controleer de huidige beschikbare promo codes op de website van DudeSpin casino.
3. Geldige promo codes zijn alleen van toepassing op nieuwe inschrijvingen.
4. Zorg ervoor dat u de juiste promo code invult tijdens het registratieproces.
5. Lees de voorwaarden en beperkingen van elke promotiecode door.
6. Geniet van uw gratis spins of bonusgeld en heb plezier met spelen op DudeSpin casino!
Ik ben een groot fan van DudeSpin casino! Ik ben 28 jaar oud en speel al een paar jaar online casino spellen. Ik ben erg tevreden met de verscheidenheid aan spellen die ze aanbieden en de snelle en betrouwbare uitbetalingen. Gebruik de DudeSpin casino promo code om extra bonusgeld te krijgen bij je eerste deposit. Ik kan DudeSpin casino zeker aanraden aan iedereen die op zoek is naar een betrouwbaar en leuk online casino! – Martijn, 28 jaar
Ik was echt teleurgesteld in mijn ervaring met DudeSpin casino. Ik ben 35 jaar oud en heb veel online casino’s uitgeprobeerd, maar DudeSpin was zeker niet de beste. Het supportteam was niet erg behulpzaam en de spellen waren niet zo leuk als ik had verwacht. Ik zou DudeSpin casino niet aanraden, er zijn veel betere opties beschikbaar. – Sarah, 35 jaar
Als je op zoek bent naar een online casino in Nederland, dan kan ik je DudeSpin aanbevelen. Met de DudeSpin casino promo code krijg je extra bonusgeld bij je eerste deposit. Ik ben 22 jaar oud en speel al een tijdje online casino spellen. Ik ben erg tevreden met de snelle uitbetalingen en de grote verscheidenheid aan spellen die DudeSpin aanbiedt. Ik kan DudeSpin aan iedereen aanraden die op zoek is naar een betrouwbaar en leuk online casino! – Jasper, 22 jaar
Ik was echt teleurgesteld in mijn ervaring met DudeSpin casino. Ik ben 31 jaar oud en heb veel online casino’s uitgeprobeerd, maar DudeSpin was zeker niet de beste. Het supportteam was niet erg behulpzaam en de spellen waren niet zo leuk als ik had verwacht. Ik zou DudeSpin niet aanraden, er zijn veel betere opties beschikbaar. – Tim, 31 jaar
Ben jij op zoek naar dudespin.com.nl een DudeSpin casino promo code voor online casino spelen in Nederland?
Deze code biedt u toegang tot exclusieve promoties en bonussen.
Gebruik de code tijdens het aanmaken van uw account om van deze voordelen te profiteren.
Op deze manier kunt u direct van start gaan met spelen en winnen.
Profiteer vandaag nog van de DudeSpin casino promo code voor online casino spelen in Nederland!